package net.sinmetal.twitcockpit.model.constant;

import java.util.Arrays;
import java.util.List;

/**
 * 自動Post曜日列挙体
 *
 * @author Sinmetal
 *
 */
public enum SchedulePostType {
    /** 日曜 */
    SUNDAY(1, "日"),
    /** 月曜 */
    MONDAY(2, "月"),
    /** 火曜 */
    TUESDAY(3, "火"),
    /** 水曜 */
    WEDNESDAY(4, "水"),
    /** 木曜 */
    THURSDAY(5, "木"),
    /** 金曜 */
    FRIDAY(6, "金"),
    /** 土曜 */
    SATURDAY(7, "土");

    /** ID */
    private Integer id;

    /** Name */
    private String name;

    /**
     * コンストラクタ
     *
     * @param id
     * @param name
     */
    private SchedulePostType(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    /**
     * IDを返す
     *
     * @return
     */
    public Integer getValue() {
        return id;
    }

    /**
     * 名前を返す
     *
     * @return
     */
    public String getName() {
        return name;
    }

    /**
     * 指定したIDの列挙体を返す
     *
     * @param id
     * @return
     */
    public static SchedulePostType parse(Integer id) {
        for (SchedulePostType value : values()) {
            if (value.getValue().equals(id)) {
                return value;
            }
        }
        throw new IllegalArgumentException(id + "は有効なタイプを表すIDとして認識されません");
    }

    /**
     * 一覧を返す
     *
     * @return
     */
    public static List<SchedulePostType> getAll() {
        return Arrays.asList(values());
    }
}
